<?php
// 数据库配置
include 'config.php'; 

// 查询支付配置
$stmt = $conn->prepare("SELECT api, pid, miyao FROM epay LIMIT 1");
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    $config = $result->fetch_assoc();
    $apiUrl = $config['api']; // 支付接口链接
    $pid = $config['pid']; // 商户ID
    $key = $config['miyao']; // 密钥
} else {
    echo json_encode(['code' => 500, 'msg' => '支付配置未找到']);
    $conn->close();
    exit;
}
$time = round(microtime(true) * 1000); // 获取当前时间的毫秒级时间戳


// 获取前端传来的参数
$type = $_GET['type'] ?? ''; // 支付方式
$out_trade_no = $_GET['out_trade_no'] ?? ''; // 商户订单号
$money = $_GET['money'] ?? 0; // 支付金额
$name = $_GET['name'] ?? '授权服务'; // 商品名称
$jqr = $_GET['jqr'];
$lxr = $_GET['lxr'];

// 检查必要参数
if (empty($type) || empty($out_trade_no) || empty($money)) {
    echo json_encode(['code' => 400, 'msg' => '参数错误']);
    $conn->close();
    exit;
}

// 插入订单到数据库
$sql = "INSERT INTO orders (out_trade_no, type, jqr, lxr, money, time) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssssss", $out_trade_no, $type, $jqr, $lxr, $money, $time);

if (!$stmt->execute()) {
    echo json_encode(['code' => 500, 'msg' => '订单插入失败: ' . $stmt->error]);
    $stmt->close();
    $conn->close();
    exit;
}

// 固定格式拼接参数
$params = [
    'money' => $money,
    'name' => $name,
    'notify_url' => 'http://yourdomain.com/notify_url.php', // 异步通知地址
    'out_trade_no' => $out_trade_no,
    'param' => '默认', // 附加信息
    'pid' => $pid,
    'type' => $type,
    'sign_type' => 'MD5',
    'return_url' => 'http://yourdomain.com/return_url.php', // 页面跳转通知地址
];

// 签名算法（按照固定格式拼接）
$signString = "money=$money&name=$name&notify_url=http://yourdomain.com/notify_url.php&out_trade_no=$out_trade_no&param=默认&pid=$pid&return_url=http://yourdomain.com/return_url.php&type=$type";
$sign = md5($signString . $key);

// 用于发送请求的参数字符串（拼接两次）
$params1 = $signString . "&sign=" . $sign . "&sign_type=MD5";

// 发起请求到支付接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params1); // 使用拼接后的字符串发送请求
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

if (curl_errno($ch)) {
    $error_msg = curl_error($ch);
    echo json_encode(['code' => 500, 'msg' => 'CURL请求失败: ' . $error_msg, 'error_code' => curl_errno($ch)]);
    curl_close($ch);
    $conn->close();
    exit;
}

curl_close($ch);

// 解析响应
$responseData = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo json_encode(['code' => 500, 'msg' => '响应数据解析失败: ' . $response]);
    $conn->close();
    exit;
}

if ($responseData['code'] == 1) {
    echo json_encode(['code' => 200, 'msg' => '支付请求成功', 'data' => $responseData]);
} else {
    echo json_encode(['code' => 500, 'msg' => '支付请求失败: ' . $responseData['code']]);
}

// 关闭数据库连接
$conn->close();
?>
